{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Melody analysis - MusicBricks Tutorial"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Introduction"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "This tutorial will guide you through some tools for Melody Analysis using the Essentia library (http://www.essentia.upf.edu). Melody analysis tools will extract a pitch curve from a monophonic or polyphonic audio recording [1]. It  outputs a time series (sequence of values) with the instantaneous pitch value (in Hertz) of the perceived melody. \n",
    "We provide two different operation modes: \n",
    "   1) using executable binaries; \n",
    "   2) Using Python wrappers.  \n",
    "   \n",
    "   \n",
    "References:\n",
    "\n",
    "[1] J. Salamon and E. Gómez, \"Melody extraction from polyphonic music signals using pitch contour characteristics,\" IEEE Transactions on Audio, Speech, and Language Processing, vol. 20, no. 6, pp. 1759–1770, 2012.   \n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 1-Using executable binaries"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "You can download the executable binaries for Linux (Ubuntu 14) and OSX in this link: http://tinyurl.com/melody-mbricks\n",
    "To execute the binaries you need to specify the input audio file and an output YAML file, where the melody values will be stored."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### Extracting melody from monophonic audio"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Locate an audio file to be processed in WAV format (input_audiofile)."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Usage: ./streaming_pitchyinfft input_audiofile output_yamlfile "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### Extracting melody from polyphonic audio"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Usage: ./streaming_predominantmelody input_audiofile output_yamlfile "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 2-Using Python wrappers"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "You should first install the Essentia library with Python bindings. Installation instructions are detailed here: http://essentia.upf.edu/documentation/installing.html . \n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "# import essentia in standard mode\n",
    "import essentia\n",
    "import essentia.standard\n",
    "from essentia.standard import *"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "After importing Essentia library, let's import other numerical and plotting tools"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "# import matplotlib for plotting\n",
    "import matplotlib.pyplot as plt\n",
    "import numpy"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Load an audio file"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Duration of the audio sample [sec]:\n",
      "14.22859410430839\n"
     ]
    }
   ],
   "source": [
    "# create an audio loader and import audio file\n",
    "loader = essentia.standard.MonoLoader(filename = 'flamenco.wav', sampleRate = 44100)\n",
    "audio = loader()\n",
    "print(\"Duration of the audio sample [sec]:\")\n",
    "print(len(audio)/44100.0)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Extract the pitch curve from the audio example"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [],
   "source": [
    "# PitchMelodia takes the entire audio signal as input - no frame-wise processing is required here...\n",
    "pExt = PredominantPitchMelodia(frameSize = 2048, hopSize = 128)\n",
    "pitch, pitchConf = pExt(audio)\n",
    "time=numpy.linspace(0.0,len(audio)/44100.0,len(pitch) )"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Plot extracted pitch contour"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\nQmCC\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7fa856421eb8>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# plot the pitch contour and confidence over time\n",
    "f, axarr = plt.subplots(2, sharex=True)\n",
    "axarr[0].plot(time,pitch)\n",
    "axarr[0].set_title('estimated pitch[Hz]')\n",
    "axarr[1].plot(time,pitchConf)\n",
    "axarr[1].set_title('pitch confidence')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<img src=\"./figure_1.png\" width=\"600\">"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.5.2"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 1
}
